Field
The following relates to approaches to 3-D rendering and architectures for performing 3-D rendering.
Related Art
3-D rendering involves producing images from 3-D scene descriptions. The images can be photorealistic, or achieve other objectives. For example, animated movies can be produced using 3-D rendering techniques.
A variety of techniques for performing 3-D rendering are known. Two principal categories of 3-D rendering are rasterization oriented approaches, and ray tracing oriented approaches. Rasterization involves defining a view point for a 3-D scene containing geometry and a pixel array to be rendered from the scene. In most rasterization approaches, the geometry is reduced to triangular primitives, and those primitives are transformed into 2-D coordinates, with a depth value. It is determined what primitive is visible from each pixel (or part of a pixel), and that visible surface is shaded. Rasterization benefits from being able to easily parallelize computation, because each pixel is independent, and geometry can be streamed geometry through a rasterization pipeline for processing. Rasterization thus is still the leading approach to time sensitive rendering applications, such as video games. However, it is difficult and time consuming to produce sophisticated rendering outputs using rasterization
Ray tracing can model the natural interaction of light with objects, and sophisticated rendering features can naturally arise from ray tracing a 3-D scene. Ray tracing can be parallelized relatively easily on the pixel by pixel level also, because pixels generally are independent of each other. However, ray tracing cannot be pipelined in the same way as rasterization, because of the distributed and disparate positions and directions of travel of the rays in the 3-D scene, in situations such as ambient occlusion, reflections, caustics, and so on.